﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;

namespace ECOSYSTEMPRESENTACION
{
    public partial class frmBoleta : Form, Interfaz
    {
        public frmBoleta()
        {
            InitializeComponent();
        }
        ClienteBL elClienteBl = new ClienteBL();
        TemporalBL elTemporalBL = new TemporalBL();
        Boleta laBoleta = new Boleta();
        BoletaBL laBoletaBL = new BoletaBL();
        Boleta.DetalleBoleta elDetalleBoleta = new Boleta.DetalleBoleta();
        List<Temporal> lista;
        Double IGV, TasaCambio;
        Double SubTotal = 0, Impuesto = 0, MontoTotal = 0;
        Int32 res, IDBoleta;
        String Moneda;
        frmDesactivarSerie formDesSerie;
        private Boleta ObtenerObjetoBoleta()
        {
            laBoleta.NroBoleta = txtNroBoleta.Text;
            laBoleta.FecEmisionBol = dtpFechaEmision.Text;
            laBoleta.ModenaBol = cmbTipoMoneda.Text;
            laBoleta.TCambioBol = txtTCambioComprob.Text;
            laBoleta.TotalBol = MontoTotal;
            laBoleta.TCancelacionBol = cmbFormaPago.Text;
            laBoleta.PagoCon = Convert.ToDouble(txtPago.Text);
            laBoleta.DiasPlasoPago = Convert.ToInt32(txtNroDias.Text);
            laBoleta.Estado = cmbEstado.Text;
            //laFactura.ElUsuario = Convert.ToInt32(lblCodigoUsuario.Text);
            laBoleta.ElCliente = txtDNICliente.Text;
            return laBoleta;
        }
        private Boolean GuardarBoleta()
        {
            Boleta laBoleta = ObtenerObjetoBoleta();
            IDBoleta = laBoletaBL.RegistrarBoleta(laBoleta);
            GuardarDetalleBoleta();
            return true;
        }
        private void GuardarDetalleBoleta()
        {
            for (int i = 0; i <= dgvDetalleBoleta.Rows.Count - 1; i++)
            {
                if (Convert.ToString(dgvDetalleBoleta["Identificador", i].Value) == "N")
                    EnviarDatosBD(Convert.ToInt32(dgvDetalleBoleta["CantidadProd", i].Value), Convert.ToDouble(dgvDetalleBoleta["PrecioUnitProd", i].Value), Convert.ToInt32(dgvDetalleBoleta["CodigoProducto", i].Value), IDBoleta, "N");
                if (Convert.ToString(dgvDetalleBoleta["Identificador", i].Value) == "A")
                    EnviarDatosBD(Convert.ToInt32(dgvDetalleBoleta["CantidadProd", i].Value), Convert.ToDouble(dgvDetalleBoleta["PrecioUnitProd", i].Value), Convert.ToInt32(dgvDetalleBoleta["CodigoProducto", i].Value), IDBoleta, "A");
            }
            if (lblBoletaID.Text == "")
                formDesSerie.EnviarDatosSerieVendido("BOLETA", IDBoleta);
            else
                formDesSerie.EnviarDatosSerieVendido("BOLETA", Convert.ToInt32(lblBoletaID.Text));
        }
        private Boolean EnviarDatosBD(Int32 Cantidad, Double PrecioVentaUnit, Int32 IDProducto, Int32 IDBoleta, String NuevoOActualizar)
        {
            elDetalleBoleta.CantidadProd = Cantidad;
            elDetalleBoleta.PrecioVentaProducto = PrecioVentaUnit;
            elDetalleBoleta.ElProducto = IDProducto;
            elDetalleBoleta.BoletaID = IDBoleta;
            if (lblBoletaID.Text != "")
                elDetalleBoleta.BoletaID = Convert.ToInt32(lblBoletaID.Text);
            else
                elDetalleBoleta.BoletaID = IDBoleta;
            if (NuevoOActualizar == "N")
                laBoletaBL.guardarDetalleBoletaProducto(elDetalleBoleta);
            if (NuevoOActualizar == "A")
                laBoletaBL.ActualizarDetalleBoletaProducto(elDetalleBoleta);
            return true;
        }
        private Boolean ActualizarBoleta()
        {
            Boleta laBoleta = ObtenerObjetoBoleta();
            if (txtNroBoleta.Text != lblNroBoleta.Text)
            {
                laBoletaBL.ActualizarBoleta(laBoleta, Convert.ToInt32(lblBoletaID.Text), txtNroBoleta.Text);
            }
            else
                laBoletaBL.ActualizarBoleta(laBoleta, Convert.ToInt32(lblBoletaID.Text), "");
            EliminarProductosRegistradosDetalleBoleta();
            return true;
        }
        private Boolean EliminarProductosRegistradosDetalleBoleta()
        {
            if (dgvProductosEliminar.Rows.Count > 0)
            {
                for (int i = 0; i <= dgvProductosEliminar.Rows.Count - 1; i++)
                {                 
                    laBoletaBL.EliminarProductoRegistradoDeDetalleBoleta(Convert.ToInt32(dgvProductosEliminar["FacturaID", i].Value), Convert.ToInt32(dgvProductosEliminar["ProductoID", i].Value));
                }
            }
            GuardarDetalleBoleta();
            return true;
        }

        public void LlenarComboCliente()
        {
            if (cmbRazonSocial.DataSource == null)
            {
                cmbRazonSocial.DataSource = elClienteBl.ObtenerClientes("TODOS");
                cmbRazonSocial.DisplayMember = "Cliente";
                cmbRazonSocial.ValueMember = "RUC-DNI";
            }
        }
        public void ObtenerTCambio()
        {
            lista = elTemporalBL.ObtenerActualesDatos();
            foreach (Temporal fila in lista)
            {
                TasaCambio = fila.TasaCambio;
                IGV = fila.IGV;
                Moneda = fila.MonedaVentas;
            }
        }
        public void CargarDetalleBoleta()
        {
            List<Boleta.DetalleBoleta> lista;
            lista = laBoletaBL.ObtenerDetalleBoletaEmitida(Convert.ToInt32(lblBoletaID.Text));
            if (lista.Count > 0)
            {
                foreach (Boleta.DetalleBoleta fila in lista)
                {
                    dgvDetalleBoleta.Rows.Add(fila.CantidadProd.ToString(), fila.NameProduc, String.Format("{0:F}", fila.PrecioVentaProducto), String.Format("{0:F}", fila.CantidadProd * fila.PrecioVentaProducto),  "",fila.ElProducto.ToString(), "R");
                }
                CalcularMonto();
            }
            gbEstado.Visible = true;
            formDesSerie = new frmDesactivarSerie();
            formDesSerie.CargarSeriesDeComprobanteVenta(Convert.ToInt32(lblBoletaID.Text), "BOLETA");
        }
        private void InhabilitarCampos()
        {
            txtNroBoleta.Text = "";
            dtpFechaEmision.Value = DateTime.Now;
            cmbRazonSocial.DataSource = null;
            txtDNICliente.Text = "";
            txtDirecCliente.Text = "";
            txtProducto.Text = "";
            txtCantidad.Text = "";
            txtPrecioVenta.Text = "";
            dgvDetalleBoleta.Rows.Clear();
            cmbFormaPago.Text = "";
            txtNroDias.Text = "";
            txtPago.Text = "";
            txtStockActual.Text = "";
            txtVuelto.Text = "0";
            txtSubTotal.Text = "0.0";
            txtIGV.Text = "0.0";
            txtTotal.Text = "0.0";
        }
        public void ActivarMenu(bool Opcion)
        {
            throw new NotImplementedException();
        }
        public void CargarDatosCliente(string Nombre, string Ruc, string Direccion)
        {
            try
            {
                cmbRazonSocial.Text = Nombre;
                txtDNICliente.Text = Ruc;
                txtDirecCliente.Text = Direccion;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        public void CargardatosProducto(string NomProd, string Cantidad, string PrecioVenta, string CodProd)
        {
            try
            {
                if (Moneda == "DOLARES" && txtTCambioComprob.Text == "SOLES")
                {
                    if (MessageBox.Show("El producto fue registrado en DOLARES pero la Venta es en SOLES\n¿Desea Convertirlo en SOLES?", "Conversion de Moneda", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        txtPrecioVenta.Text = String.Format("{0:F}", Convert.ToDouble(PrecioVenta) * TasaCambio);
                    }

                }
                else { txtPrecioVenta.Text = PrecioVenta; }
                if (Moneda == "SOLES" && txtTCambioComprob.Text != "SOLES")
                {
                    if (MessageBox.Show("El producto fue registrado en SOLES pero la Venta es en DOLARES\n¿Desea Convertirlo en DOLARES?", "Conversion de Moneda", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        txtPrecioVenta.Text = String.Format("{0:F}", Convert.ToDouble(PrecioVenta) / TasaCambio);
                    }

                }
                else { txtPrecioVenta.Text = PrecioVenta; }
                txtProducto.Text = NomProd;
                txtStockActual.Text = Cantidad;
                lblCodigoProducto.Text = CodProd;
                txtCantidad.Text = "1";
                txtCantidad.Select();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        public void LlenarDatosCliente(String RucBuscar)
        {
            List<Cliente> lista;
            lista = elClienteBl.BuscarClienteID(Convert.ToString(cmbRazonSocial.SelectedValue));
            foreach (Cliente fila in lista)
            {
                this.txtDNICliente.Text = fila.RUCDNICLiente.ToString();
                this.txtDirecCliente.Text = fila.DirecCliente.ToString();
            }
        }
        //CALCULAR IGV
        public void CalcularMonto()
        {
            MontoTotal = 0;
            for (int i = 0; i <= dgvDetalleBoleta.Rows.Count - 1; i++)
            {
                MontoTotal = MontoTotal + Convert.ToDouble(dgvDetalleBoleta["Monto", i].Value);
            }
            Impuesto = MontoTotal * (IGV / 100);
            SubTotal = MontoTotal - Impuesto;
            txtSubTotal.Text = String.Format("{0:F}", SubTotal);
            txtIGV.Text = String.Format("{0:F}", Impuesto);
            if (cmbTipoMoneda.Text == "DOLARES")
            {
                txtTotal.Text = String.Format("{0:$ #,##0.00}", MontoTotal);
            }
            if (cmbTipoMoneda.Text == "SOLES")
            {
                txtTotal.Text = String.Format("{0:C}", MontoTotal);            
            }            
        }
        private Int32 VerificarListaProductoRepetido()
        {
            for (int i = 0; i <= dgvDetalleBoleta.Rows.Count - 1; i++)
            {
                if (lblCodigoProducto.Text == Convert.ToString(dgvDetalleBoleta["CodigoProducto", i].Value))
                {
                    res = 1;
                    break;
                }
                else res = 0;
            }
            return res;
        }
        private void CambiarMoneda(String tipo)
        {
            Double MontoT, PrecioUni;
            if (tipo == "DOLARES")
            {
                for (int i = 0; i <= dgvDetalleBoleta.Rows.Count - 1; i++)
                {
                    MontoT = Convert.ToDouble(dgvDetalleBoleta["Monto", i].Value) / Convert.ToDouble(txtTCambioComprob.Text);
                    PrecioUni = MontoT / Convert.ToInt32(dgvDetalleBoleta["CantidadProd", i].Value);
                    dgvDetalleBoleta["PrecioUnitProd", i].Value = String.Format("{0:F}", PrecioUni);
                    dgvDetalleBoleta["Monto", i].Value = String.Format("{0:F}", MontoT);
                }
            }
            if (tipo == "SOLES")
            {
                for (int i = 0; i <= dgvDetalleBoleta.Rows.Count - 1; i++)
                {
                    MontoT = Convert.ToDouble(dgvDetalleBoleta["Monto", i].Value) * TasaCambio;
                    PrecioUni = MontoT / Convert.ToInt32(dgvDetalleBoleta["CantidadProd", i].Value);
                    dgvDetalleBoleta["PrecioUnitProd", i].Value = String.Format("{0:F}", PrecioUni);
                    dgvDetalleBoleta["Monto", i].Value = String.Format("{0:F}", MontoT);
                }                
            }
           
        }
        private void FormularioAbrirSerie(Int32 IDProd)
        {
            formDesSerie.MdiParent = this.MdiParent;
            formDesSerie.CargarSeriePorProducto(IDProd);
            formDesSerie.Show();
        }
        

        // --> EVENTOS <--

        private void dgvDetalleBoleta_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == dgvDetalleBoleta.Columns["DeleteProd"].Index)
            {
                if (MessageBox.Show("ESTA SEGURO DE ELIMINAR EL PRODUCTO", "ELIMINAR PRODUCTO", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    formDesSerie.EliminarSerieListaDesactivasDGVLISTASERIEDESACTIVAR(Convert.ToInt32(dgvDetalleBoleta["CodigoProducto", e.RowIndex].Value));
                    if (Convert.ToString(dgvDetalleBoleta["Identificador", e.RowIndex].Value) == "R")
                    {
                        dgvProductosEliminar.Rows.Add(dgvDetalleBoleta["CodigoProducto", e.RowIndex].Value, lblBoletaID.Text);
                    }
                    dgvDetalleBoleta.Rows.Remove(dgvDetalleBoleta.Rows[e.RowIndex]);
                    MontoTotal = 0;
                    txtPago.Text = "";
                    txtVuelto.Text = "";
                    CalcularMonto();
                }
            }
        }

        private void btnAgregarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                if (VerificarListaProductoRepetido() == 0)
                {
                    Int32 Cantidad = Convert.ToInt32(txtCantidad.Text);
                    Double Monto = Convert.ToDouble(txtPrecioVenta.Text) * Cantidad;
                    dgvDetalleBoleta.Rows.Add(Cantidad, txtProducto.Text,String.Format("{0:F}",Convert.ToDouble(txtPrecioVenta.Text)),String.Format("{0:F}", Monto), txtStockActual.Text, lblCodigoProducto.Text,"N");
                    CalcularMonto();
                    formDesSerie.lblCantidad.Text = txtCantidad.Text;
                    formDesSerie.txtFiltrarSerie.ReadOnly = false;
                    formDesSerie.dgvListaSerieActivas.Enabled = true;
                    FormularioAbrirSerie(Convert.ToInt32(lblCodigoProducto.Text));
                    txtProducto.Text = "";
                    txtCantidad.Text = "";
                    txtPrecioVenta.Text = "";
                    txtPago.Text = "";                   
                    txtStockActual.Text = "";
                    lblCodigoProducto.Text = "";
                }
                else
                    MessageBox.Show("El Producto ya se encuentra en la lista ?");
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            try
            {
                LlenarComboCliente();
                cmbTipoMoneda.SelectedIndex = 1;
                cmbFormaPago.SelectedIndex = 0;
                cmbEstado.SelectedIndex = 0;
                lblBoletaID.Text = "";
                dtpFechaEmision.Value = DateTime.Now;
                txtFechaVence.Text = DateTime.Now.ToShortDateString();
                formDesSerie = new frmDesactivarSerie();
                cmbRazonSocial.Text = "";
                btnNuevo.Enabled = false;
                btnGuardar.Enabled = true;
                btnCancelar.Enabled = true;
                btnBuscar.Enabled = false;
                gbDatos.Enabled = true;

            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnNuevoCliente_Click(object sender, EventArgs e)
        {
            cmbRazonSocial.Text = "";
            txtDNICliente.Text = "";
            txtDirecCliente.Text = "";
            frmCliente formCliente = new frmCliente();
            formCliente.MdiParent = this.MdiParent;
            formCliente.NameFormulario = "frmCliente";
            formCliente.Manipular = this;
            formCliente.btnBuscar.Visible = false;
            formCliente.btnActualizar.Visible = false;
            formCliente.btnCancelar.Enabled = false;
            formCliente.Show();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            try
            {
                InhabilitarCampos();
                btnNuevo.Enabled = true;
                btnBuscar.Enabled = true;
                btnGuardar.Enabled = false;
                btnActualizar.Enabled = false;
                btnCancelar.Enabled = false;
                gbDatos.Enabled = false;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void cmbTipoMoneda_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (cmbTipoMoneda.SelectedIndex == 0)
                {
                    txtTCambioComprob.ReadOnly = false;
                    if (dgvDetalleBoleta.Rows.Count == 0)
                        txtTCambioComprob.Text = Convert.ToString(TasaCambio);
                    else
                    {
                        txtTCambioComprob.Text = Convert.ToString(TasaCambio);
                        CambiarMoneda("DOLARES");
                        CalcularMonto();
                        txtPago.Text = "";
                    }                  
                }
                else if (cmbTipoMoneda.SelectedIndex == 1)
                {
                    txtTCambioComprob.ReadOnly = true;
                    if (dgvDetalleBoleta.Rows.Count == 0)
                        txtTCambioComprob.Text = "SOLES";
                    else
                    {
                        txtTCambioComprob.Text = "SOLES";
                        CambiarMoneda("SOLES");
                        CalcularMonto();
                        txtPago.Text = "";
                    }
                    
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void frmBoleta_Load(object sender, EventArgs e)
        {
            try
            {
                ObtenerTCambio();
                lblImpuesto.Text = Convert.ToString(IGV) + "%";
                cmbEstado.SelectedIndex = 0;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void cmbFormaPago_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (cmbFormaPago.SelectedIndex == 0)
                {
                    txtNroDias.Enabled = false;
                    txtNroDias.Text = "0";
                    txtPago.Select();
                    txtVuelto.Text = "0";
                    lblVueltoSaldo.Text = "Vuelto :";
                    txtPago.Text = String.Format("{0:F}", MontoTotal);
                }
                else
                {
                    txtNroDias.Enabled = true;
                    txtNroDias.Select();
                    lblVueltoSaldo.Text = "Saldo :";
                    txtPago.Text = "0";
                    txtVuelto.Text = String.Format("{0:F}", MontoTotal);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void cmbRazonSocial_SelectionChangeCommitted(object sender, EventArgs e)
        {
            try
            {
                LlenarDatosCliente(Convert.ToString(cmbRazonSocial.SelectedValue));
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void cmbRazonSocial_KeyUp(object sender, KeyEventArgs e)
        {
            try
            {
                LlenarDatosCliente(Convert.ToString(cmbRazonSocial.SelectedValue));
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnBuscarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                frmBuscarProducto formBusProd = new frmBuscarProducto();
                formBusProd.MdiParent = this.MdiParent;
                formBusProd.Manipular = this;
                formBusProd.NameFormulario = "frmBoleta";
                formBusProd.Show();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void txtPago_TextChanged(object sender, EventArgs e)
        {
            try
            {               
                if (txtTotal.Text != "0.0" && txtPago.Text != "" && cmbFormaPago.Text == "CONTADO")
                {
                    txtVuelto.Text = String.Format("{0:F}", Convert.ToDouble(txtPago.Text) - MontoTotal);
                }
                else if (txtTotal.Text != "0.0" && txtPago.Text != "" && cmbFormaPago.Text == "CREDITO")
                {
                    txtVuelto.Text = String.Format("{0:F}", MontoTotal - Convert.ToDouble(txtPago.Text));
                }
                else if (txtPago.Text == "" && cmbFormaPago.Text == "CREDITO")
                {
                    txtVuelto.Text = String.Format("{0:F}", MontoTotal);
                }
                else if (txtPago.Text == "" && cmbFormaPago.Text == "CONTADO")
                {
                    txtPago.Text = String.Format("{0:F}", MontoTotal);                    
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void txtNroDias_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (txtNroDias.Text != "")
                {
                    Int32 nroDias = Convert.ToInt32(txtNroDias.Text);
                    txtFechaVence.Text = Convert.ToString(DateTime.Now.AddDays(nroDias).ToShortDateString());
                }
                else
                {
                    txtNroDias.Text = "0";
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void dgvDetalleBoleta_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.ColumnIndex != dgvDetalleBoleta.Columns["DeleteProd"].Index)
                {
                    Int32 nroFila = Int32.Parse(e.RowIndex.ToString());
                    this.txtProducto.Text = Convert.ToString(dgvDetalleBoleta["NameProduc", nroFila].Value);
                    this.txtStockActual.Text = Convert.ToString(dgvDetalleBoleta["StockActual", nroFila].Value);
                    this.txtCantidad.Text = Convert.ToString(dgvDetalleBoleta["CantidadProd", nroFila].Value);
                    this.txtPrecioVenta.Text = Convert.ToString(dgvDetalleBoleta["PrecioUnitProd", nroFila].Value);
                    this.lblCodigoProducto.Text = Convert.ToString(dgvDetalleBoleta["CodigoProducto", nroFila].Value);
                    dgvDetalleBoleta["CodigoProducto", nroFila].Value = "";
                    this.lblNroFila.Text = Convert.ToString(nroFila);
                    dgvDetalleBoleta.Enabled = false;
                    btnAgregarProducto.Visible = false;
                    btnActualizarProducto.Visible = true;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnActualizarProducto_Click(object sender, EventArgs e)
        {
          try{
                if (VerificarListaProductoRepetido() == 0)
                {
                    Int32 nroFila = Convert.ToInt32(lblNroFila.Text);
                    Double Monto = Convert.ToDouble(txtPrecioVenta.Text) * Convert.ToDouble(txtCantidad.Text);
                    dgvDetalleBoleta["NameProduc", nroFila].Value = txtProducto.Text;
                    dgvDetalleBoleta["StockActual", nroFila].Value = txtStockActual.Text;
                    dgvDetalleBoleta["CantidadProd", nroFila].Value = txtCantidad.Text;
                    dgvDetalleBoleta["PrecioUnitProd", nroFila].Value = txtPrecioVenta.Text;
                    dgvDetalleBoleta["CodigoProducto", nroFila].Value = lblCodigoProducto.Text;
                    dgvDetalleBoleta["Monto", nroFila].Value = Monto;
                    if (Convert.ToString(dgvDetalleBoleta["Identificador", nroFila].Value) == "R")
                    {
                        dgvDetalleBoleta["Identificador", nroFila].Value = "A";
                    }
                    else
                    {
                        dgvDetalleBoleta["Identificador", nroFila].Value = "N";
                        dgvDetalleBoleta["StockActual", nroFila].Value = txtStockActual.Text;
                    }
                    CalcularMonto();
                    txtProducto.Text = "";
                    txtStockActual.Text = "";
                    txtCantidad.Text = "";
                    txtPrecioVenta.Text = "";
                    lblCodigoProducto.Text = "";
                    lblNroFila.Text = "";
                    dgvDetalleBoleta.Enabled = true;
                    btnAgregarProducto.Visible = true;
                    btnActualizarProducto.Visible = false;
                }
                else
                    MessageBox.Show("El Producto ya se encuentra en la lista ?");
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                GuardarBoleta();
                MessageBox.Show("BOLETA Nro: "+txtNroBoleta.Text+" REGISTRADO CORRECTAMENTE");
                InhabilitarCampos();
                btnNuevo.Enabled = true;
                btnBuscar.Enabled = true;
                btnGuardar.Enabled = false;
                btnCancelar.Enabled = false;
                gbDatos.Enabled = false;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void cbMostrarAllSeries_CheckedChanged(object sender, EventArgs e)
        {
            if (cbMostrarAllSeries.Checked == true)
            {
                if (dgvDetalleBoleta.Rows.Count > 0)
                {
                    if (Application.OpenForms["frmDesactivarSerie"] == null)
                    {
                        formDesSerie.MdiParent = this.MdiParent;
                        formDesSerie.Show();
                    }
                }
                else
                    MessageBox.Show("NO HAY SERIES A MOSTRAR");
                cbMostrarAllSeries.Checked = false;
            }
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                frmBuscarBoleta FormBusBoleta = new frmBuscarBoleta();
                FormBusBoleta.MdiParent = this.MdiParent;
                FormBusBoleta.btnRegresar.Visible = true;
                FormBusBoleta.Show();
                this.Close();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnCancelarUpdateProduc_Click(object sender, EventArgs e)
        {
            try
            {
                txtProducto.Text = "";
                txtStockActual.Text = "";
                txtCantidad.Text = "";
                txtPrecioVenta.Text = "";
                lblCodigoProducto.Text = "";
                lblNroFila.Text = "";
                dgvDetalleBoleta.Enabled = true;
                btnAgregarProducto.Visible = true;
                btnActualizarProducto.Visible = false;
                btnBuscarProducto.Select();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            try
            {
                ActualizarBoleta();
                MessageBox.Show("BOLETA ACTUALIZADA CORRECTAMENTE");
                InhabilitarCampos();
                formDesSerie.Close();
                btnNuevo.Enabled = true;
                btnBuscar.Enabled = true;
                btnGuardar.Enabled = false;
                btnActualizar.Enabled = false;
                btnCancelar.Enabled = false;
                gbDatos.Enabled = false;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        
    }
}